#ifndef PROTOOL_H
#define PROTOOL_H
using uint = unsigned int;
#include<new>
#include <malloc.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
//注册
#define REGIST_OK "regist ok"
#define REGIST_FAILED "regist failed : name existed"
//登录
#define LOGIN_OK "login ok"
#define LOGIN_FAILED "login failed : name  or pwd or relogin"
#define SEARCH_USER_NO "no such people"
#define SEARCH_USER_ONLINE "online"
#define SEARCH_USER_OFFLINE "OFFLINE"
#define UNKNOW_ERROR "unknow error"
#define EXISTED_FRIEND "friend exist"
#define ADD_FRIEND_OFFLINE "user offline"
#define ADD_FRIEND_NO_EXIST "user not exist"
#define DEL_FRIEND_OK "delete friend ok"
#define DIR_NO_EXIST "dir not exist"
#define FILE_NAME_EXIST "file name exist"
#define CREATE_DIR_OK "create dir ok"
#define DEL_DIR_OK "delete dir ok"
#define DEL_DIR_FAILED "delete dir failed : is reguler file"
#define RENAME_FILE_OK "rename file ok"
#define RENAM_FILE_FAILED "rename file failed"
#define ENTER_DIR_FAILED "enter dir failed : is regular file"
#define UPLOAD_FILE_OK "upload file ok"
#define UPLOAD_FILE_FAILED "upload file failed"
#define DEL_FILE_OK "delete file ok"
#define DEL_FILE_FAILED "delete file failed : is dir"
#define MOVE_FILE_OK "move file ok"
#define MOVE_FILE_FAILED "move file failed:is regular file"
#define COMMON_ERR "operator failed : system is busy"




enum ENUM_MSG_TYPE//如果不设置则每个枚举类中的大小一次递增1
{
    ENUM_MSG_TYPE_MIN = 0,
    ENUM_MSG_TYPE_REGIST_REQUEST,//注册请求
    ENUM_MSG_TYPE_REGIST_RESPOND,//注册回复
    ENUM_MSG_TYPE_LOGIN_REQUEST,//登录请求
    ENUM_MSG_TYPE_LOGIN_RESPOND,//登录回复
    ENUM_MSG_TYPE_ALLONLINE_REQUEST,//在线用户请求
    ENUM_MSG_TYPE_ALLONLINE_RESPOND,//在线用户回复
    ENUM_MSG_TYPE_SEARCH_USR_REQUEST,//搜索用户请求
    ENUM_MSG_TYPE_SEARCH_USR_RESPOND,//搜索用户回复
    ENUM_MSG_TYPE_ADD_FRIEND_REQUEST,//添加好友请求
    ENUM_MSG_TYPE_ADD_FRIEND_RESPOND,//添加好友回复
    ENUM_MSG_TYPE_ADD_FRIEND_AGREE,//同意添加好友
    ENUM_MSG_TYPE_ADD_FRIEND_REFUSE,//拒绝添加好友
    ENUM_MSG_TYPE_FLUSH_FRIEND_REQUEST,//刷新好友请求
    ENUM_MSG_TYPE_FLUSH_FRIEND_RESPOND,//刷新好友回复
    ENUM_MSG_TYPE_DELETE_FRIEND_REQUEST,//删除好友请求
    ENUM_MSG_TYPE_DELETE_FRIEND_RESPOND,//删除好友回复
    ENUM_MSG_TYPE_PRIVATE_CHAT_FRIEND_REQUEST,//私聊请求
    ENUM_MSG_TYPE_PRIVATE_CHAT_FRIEND_RESPOND,//私聊回复
    ENUM_MSG_TYPE_GROUP_CHAT_FRIEND_REQUEST,//群聊请求
    ENUM_MSG_TYPE_GROUP_CHAT_FRIEND_RESPOND,//群聊回复
    ENUM_MSG_TYPE_CREATE_DIR_REQUEST,//创建文件夹请求
    ENUM_MSG_TYPE_CREATE_DIR_RESPOND,//创建文件夹回复
    ENUM_MSG_TYPE_FLUSH_FILE_REQUEST,//刷新文件夹请求
    ENUM_MSG_TYPE_FLUSH_FILE_RESPOND,//刷新文件夹回复
    ENUM_MSG_TYPE_DEL_DIR_REQUEST,//删除文件夹请求
    ENUM_MSG_TYPE_DEL_DIR_RESPOND,//删除文件夹回复
    ENUM_MSG_TYPE_RENAME_FILE_REQUEST,//重命名文件夹请求
    ENUM_MSG_TYPE_RENAME_FILE_RESPOND,//重命名文件夹回复
    ENUM_MSG_TYPE_ENTER_DIR_REQUEST,//进入文件夹请求
    ENUM_MSG_TYPE_ENTER_DIR_RESPOND,//进入文件夹回复
    ENUM_MSG_TYPE_UPLOAD_DIR_REQUEST,//上传文件请求
    ENUM_MSG_TYPE_UPLOAD_DIR_RESPOND,//上传文件回复
    ENUM_MSG_TYPE_DEL_FILE_REQUEST,//删除文件请求
    ENUM_MSG_TYPE_DEL_FILE_RESPOND,//删除文件恢复
    ENUM_MSG_TYPE_DOWNLOAD_FILE_REQUEST,//下载文件请求
    ENUM_MSG_TYPE_DOWNLOAD_FILE_RESPOND,//下载文件回复
    ENUM_MSG_TYPE_SHARE_FILE_REQUEST,//共享文件请求
    ENUM_MSG_TYPE_SHARE_FILE_RESPOND,//共享文件回复
    ENUM_MSG_TYPE_SHARE_FILE_NOTE, //共享文件的通知
    ENUM_MSG_TYPE_SHARE_FILE_NOTE_RESPOND, //共享文件的回复
    ENUM_MSG_TYPE_MOVE_FILE_REQUEST, //移动文件的通知
    ENUM_MSG_TYPE_MOVE_FILE_RESPOND, //移动文件的回复

    ENUM_MSG_TYPE_MAX = 0x0ffffff,
};


struct FileInfo
{
    char caFileName[32]; // 文件名字
    int iFileType;//文件类型
};


struct PDU
{
    uint uiPDULen;//总的协议数据单元的大小
    uint uiMsgType;//消息类型
    char caData[64];//数据
    uint uiMsgLen; //实际消息长度
    int caMsg[]; // 实际消息
};//协议TCP

PDU *mkPDU(uint uiMsgLen);//产生一个结构体
#endif // PROTOOL_H
